Digital network technology has revolutionized how data and information can be accessed. Data networks interconnect host servers that provide services that range from video games and social networking sites, to email, and digital telephony. Host servers may also house data that may be useful to shoppers, to doctors, and governmental agencies.
Typically, a user will access a particular host server through a software client (for example, a browser or an email client). The user may request access by entering the Internet Protocol (IP) address of the server (for example, 68.XXX.0.1) or by entering its assigned domain name (www.patentspeak.com).
A domain name is an alphanumeric string that is associated with the IP address of a particular server and is generally easier to remember. A domain name consists of one or more parts, sometimes referred to as labels, that are conventionally concatenated, and delimited by dots, such as example.com. The right-most label conveys the top-level domain; for example, the domain name www.patentspeak.com belongs to the top-level domain com. The hierarchy of domains descends from right to left. Each label to the left specifies a subdivision, or subdomain of the domain to the right. For example, the label “patentspeak” specifies a subdomain of the com domain. WWW is a sub domain of patentspeak.com. This tree of subdivisions may have up to 127 levels.
A hostname is a domain name that is associated with at least one IP address. For example, the domain names www.patentspeak.com and patentspeak.com are also hostnames, whereas the com domain is not.
The association between a domain name and an IP address is maintained by the Domain Name System (DNS). The DNS receives a request from a user via a software client and resolves the request to return the associated IP address to the client. The client may then attempt to establish a connection between the user computer and the device associated with the returned address using the IP address provided by the DNS. In its most simple abstraction, the DNS is like a phonebook that relates names to numbers.
The DNS is a distributed system. The system may be visualized as a tree of logical and/or physical elements performing various tasks. A typical DNS may include the following elements:
Local resolver library—a library on a user computing device that implements programmatic interfaces such as gethostbyname( ) and getaddrinfo( ) and generates a query that is sent over the network to a caching DNS server.
Caching (recursive) DNS server—a server that attempts to resolve a query. The caching DNS server will first attempt to find the requested IP address in its cache. If the address is not found, the caching DNS will generate its own query that is sent to other DNS name servers. The caching DNS server may reside on the same computing device as the local resolver library. In the retail environment, the caching DNS server is provided by an Internet service provider (ISP) as part of a customer's Internet service.
Authoritative DNS server—a server that provides answers to queries. The authoritative DNS server operates as the database back end that houses the association of a host name to one or more IP addresses.
When an application makes a request that requires a domain name lookup, the application will send a resolution request to the DNS resolver. The DNS resolver will typically have a cache containing recent lookups. If the cache contains the answer to the request, the resolver will return the value in the cache to the application that made the request.
If the cache does not contain the answer, the resolver will send the request to one or more designated caching DNS servers. The caching DNS server thus queried will search its cache and, if the answer is not cached, will search the DNS for a name server that can resolve the request. The answer, if found, is returned to the DNS resolver, cached for future use and provided to the application that initiated the request.
The distributed architecture of the DNS allows for efficient use of name servers thereby reducing the burden on authoritative DNS servers.
A content distribution network (CDN) is an architecture that is also intended to improve network efficiency and reduce infrastructure costs. A CDN achieves its efficiency by directing clients on a regional, continental, or global scale to download content from a server that is topologically closest to them, possibly with an overlay of geopolitical considerations. Mappings in a CDN are typically managed via DNS.
In a CDN, a single hostname may map to multiple IP addresses. In the case of a CDN, an intelligent authoritative name server responds to queries differently depending on what recursive name server responds to a particular query from a client. The presumption is that the responsible recursive DNS server is in close proximity (geographically and topologically) to the querying client. The intelligent authoritative name server uses information it receives from the caching DNS server to determine which response to return to the caching DNS server.
However, it is often the case that the caching DNS server is not, in fact, located near the requesting computing device. Further, the granularity of the response from the intelligent authoritative name server is limited to the proximity information provided by the caching DNS server making the request. That is, the intelligent authoritative name server does not receive proximity information about the computing device that originated the request. Additionally, the current architecture of CDNs does not contemplate obtaining information from a computing device that may be used for other network management functions.